inspector: Dispose tree data properly
authorMatthias Clasen <mclasen@redhat.com>
Sat, 18 Jul 2020 02:54:19 +0000 (22:54 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 18 Jul 2020 02:54:19 +0000 (22:54 -0400)
Another place where we were leaking children.

gtk/inspector/tree-data.c

index 4c0b3b8394539ef0dc97962c1c54055d3a2badaf..fdf77a2cfdc59b376f6ce7f62fce70097bd88432 100644 (file)
@@ -171,11 +171,26 @@ toggle_show (GtkToggleButton      *button,
     show_types (sl);
 }
 
+static void
+dispose (GObject *object)
+{
+  GtkInspectorTreeData *sl = GTK_INSPECTOR_TREE_DATA (object);
+  GtkWidget *child;
+
+  while ((child = gtk_widget_get_first_child (GTK_WIDGET (sl))))
+    gtk_widget_unparent (child);
+
+  G_OBJECT_CLASS (gtk_inspector_tree_data_parent_class)->dispose (object);
+}
+
 static void
 gtk_inspector_tree_data_class_init (GtkInspectorTreeDataClass *klass)
 {
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
+  object_class->dispose = dispose;
+
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/tree-data.ui");
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorTreeData, view);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorTreeData, object_title);